# -*- coding:utf-8 -*-
"""
@Time:  2024/6/15 12:30
@Auth:  Mrs.Gou 
@Function:  函数传参
"""


# 2种传参形式:位置性参数、键值对参数


def my_func1(x, y, z, *args, a=11, b=22, **kwargs):
    """
    函数传参
    :param x, y, z:显示定义的位置型参数，必须要传，接收方式是按位置接收
    :*args 把所有没有显示定义的位置型参数接收为一个元祖
    :a,b 显示定义键值对参数，也叫带默认值的参数，如果不传就使用默认值，如果传了就是用传了的值
            （如果有*args，这种键值对参数是不能按位置传的）
            （传递的时候，也是按键值对传，没有顺序要求）
    :**kwargs 把没有显示定义的键值对参数接收为一个字典
    :定义顺序：键值对参数在位置参数后面，*args和**kwargs都在显示定义的后面
    :return:
    """
    print(x, y, z)
    print(args)
    print(a, b)
    print(kwargs)


my_func1(1, 2, 3, 4, 5, 6, b=33, a=55, cc='66', dd='88')


def my_add1(x=0, y=0):
    return x + y


print(my_add1(1, 1))


def my_add2(*args):
    z = 0
    for i in args:
        z += i
    return z


print(my_add2(1, 2, 45, 23))
